/**
 * Copyright (C) 2008 aileron.cc
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package cc.aileron.web.sso.process;

import static cc.aileron.wsgi.navigation.WsgiNavigation.State.Continue;
import cc.aileron.web.sso.dto.SessionDto;
import cc.aileron.web.sso.logic.SessionLogic;
import cc.aileron.web.sso.resources.SessionResource;
import cc.aileron.wsgi.WsgiProcess;
import cc.aileron.wsgi.navigation.WsgiNavigation;

import com.google.inject.Inject;

/**
 * セッションIDから user_identifier を取得する
 * @author aileron
 *
 */
public class ConnectSessionProcess implements WsgiProcess<SessionResource> 
{
	/**
	 * constractor injection
	 * @param logic
	 */
	@Inject
	public ConnectSessionProcess(
			final SessionLogic logic) 
	{
		this.logic = logic;
	}
	
	/**
	 * logic
	 */
	private final SessionLogic logic;
	
	/*
	 * (非 Javadoc)
	 * @see cc.aileron.wsgi.WsgiProcess#doProcess(java.lang.Object)
	 */
	@Override
	public WsgiNavigation doProcess(final SessionResource resource) throws Exception 
	{
		resource.sessionId = resource.sessionId;
		final SessionDto dto = logic.findBySessionId(resource);
		if(dto!=null)
		{
			resource.userIdentifier = dto.userIdentifier;
		}
		return Continue.navigation();
	}
}